package com.itheima.d01_exam.test06;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Collectors;

public class Test {

    /*
    请将下面人员信息按以下顺序存放至一个ArrayList集合中，
                1.要求定义一个标准类Person 人员信息为： 姓名 年龄 地址
                    张成 28 甘肃
                    刘安 37 宁夏
                    刘墉 40 山东
                    和珅 35 北京
                    和二 36 北京
                    纪晓岚 39 山西
                    刘安 37 宁夏
                2. 要求随机输出一个人员信息
                3. 删除该集合中和姓人员
                4. 如集合中有重复人员，请去掉重复人员信息(要求采用Set集合)
                5. 修改纪晓岚的地址信息为河北
                6. 打印输出大于35岁的所有人员信息
     */
    public static void main(String[] args) {
        List<Person> list = new ArrayList<>();
            list.add(new Person("张成", 28, "甘肃"));
            list.add(new Person("刘安", 37, "宁夏"));
            list.add(new Person("刘墉", 40, "山东"));
            list.add(new Person("和珅", 35, "北京"));
            list.add(new Person("和二", 36, "北京"));
            list.add(new Person("纪晓岚", 39, "山西"));
            list.add(new Person("刘安", 37, "宁夏"));
        //2.随机输出一个人员信息
        System.out.println(list.get(new Random().nextInt(list.size())));
        System.out.println("=======================");

        //3.删除该集合中和姓人员
        //list.removeIf(p->p.getName().startsWith("和"));
        for (int i = 0; i < list.size(); i++) {
            if(list.get(i).getName().startsWith("和")){
                list.remove(i);
                i--;
            }
        }
        list.forEach(System.out::println);
        System.out.println("=======================");

        //4.去除重复
        Set<Person> personSet = list.stream().collect(Collectors.toSet());  //默认HashSet
        personSet.forEach(System.out::println);
        System.out.println("=======================");

        //5.修改纪晓岚的地址信息为河北
        personSet.stream()
                .filter(p->p.getName().equals("纪晓岚"))
                .forEach(p->p.setAddress("河北"));

        personSet.forEach(System.out::println);

        System.out.println("=======================");
        //6.打印输出大于35岁的所有人员信息
        personSet.stream()
                .filter(p->p.getAge()>35)
                .forEach(System.out::println);
    }
}
















